package com.sc.nft.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sc.nft.entity.vo.DaoTransferDetailVO;
import com.sc.nft.enums.ApprovalStatusEnum;
import com.sc.nft.enums.WalletChannelEnum;
import com.sc.nft.enums.wallet.DaoTransferTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import org.web3j.abi.datatypes.Bool;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 企业转账表服务接口
 *
 * @author zxy
 * @since 2023-12-21 15:18:22
 * @description 由 Mybatisplus Code Generator 创建
 */
public interface DaoTransferService {
    /**
     * 记录列表
     * @param daoId
     * @param scence 1 企业转账记录 2市值转账记录
     * @param type
     * @param applyTel
     * @param marketAccount
     * @param walletChannel
     * @param status
     * @param startTime
     * @param endTime
     * @return
     */
    Page<DaoTransferDetailVO> getRecords(Long daoId,Integer scence ,DaoTransferTypeEnum type,String applyTel,String marketAccount,WalletChannelEnum walletChannel,
                                         ApprovalStatusEnum status,Date startTime ,Date endTime ,Page page );

    /**
     * 审批
     * @param id
     * @param status
     * @param remark
     */
    void approval(Long id, Boolean status, String remark);

    /**
     * 撤销申请
     * @param id
     * @param daoId
     * @param operatorId
     */
    void revoke(Long id,Long daoId,Long operatorId);

    /**
     * dao转账to三方钱包
     * @param amount
     */
    void daoApplyToThird(Long id,Long daoId, Long operatorId,  BigDecimal amount);

    /**
     *dao(商城)转账to三方钱包
     * @param amount
     */
    void mallDaoApplyToThird(Long id,Long daoId, Long operatorId,  BigDecimal amount);

    /**
     * dao转账to市值账号
     * @param daoId
     * @param operatorId
     * @param marketAccountId
     * @param amount
     */
    void daoApplyToMarket(Long marketAccountId, Long daoId, Long operatorId, BigDecimal amount);

    /**
     * 市值账号转入
     * @param marketAccountId
     * @param amount
     */
    void marketApplyToDao(Long marketAccountId, Long daoId, Long operatorId, BigDecimal amount);
}
